package com.kitty.game.equip.model;

import com.kitty.game.config.Equip;
import com.kitty.game.enter.FiedValue;
import com.kitty.game.equip.EquipDataPool;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.LoggerFactory;

import java.io.Serializable;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import com.kitty.game.equip.model.RoleEquip;

/**
 * 角色装备容器
 */
@Slf4j
public class EquipBox implements Serializable {
    /**
     * key:equipId value:roleEquip对象
     */

    private Map<Integer, RoleEquip> equips = new ConcurrentHashMap<>();

    public Map<Integer, RoleEquip> getEquips() {
        if (this.equips == null) {
            equips = new ConcurrentHashMap<>();
        }
        return equips;
    }

    /**
     * 取一件装备
     */
    public RoleEquip getRoleEquip(int equipId) {
        return this.equips.get(equipId);
    }

    /**
     * 添加一件装备
     */
    public void addEquip(RoleEquip roleEquip) {
        this.equips.put(roleEquip.getId(), roleEquip);
    }

    /**
     * 删除一件装备
     */
    public boolean removeEquip(int equipId) {
        RoleEquip roleEquip = getRoleEquip(equipId);
        try {
            if (roleEquip.getType().equals("法宝")){
                throw new IllegalArgumentException("删除法宝=="+roleEquip.getRoleId()+"=="+"=="+roleEquip.getName()+"=="+roleEquip.queryLevel());
            }
            if (roleEquip.getType().contains("魂器")){
                throw new IllegalArgumentException("删除魂器=="+roleEquip.getRoleId()+"=="+"=="+roleEquip.getName()+"=="+roleEquip.queryLevel());
            }
            if (roleEquip.queryUpgradeLevel() >= 8 ){
                throw new IllegalArgumentException("删除高级装备=="+roleEquip.getRoleId()+"=="+"=="+roleEquip.getName()+"=="+roleEquip.queryLevel()+"=="+roleEquip.queryUpgradeLevel());
            }
            Equip equip = EquipDataPool.getByName(roleEquip.getName());
            if (equip != null && (equip.getPosition()==4|| equip.getPosition()==5||equip.getPosition()==6)&&equip.getReq_level()>=80) {
                boolean boo = false;
                for (Map.Entry<Short, FiedValue> entry:roleEquip.getFields().get((short) 514).getField().entrySet()){
                    int type = (int) entry.getValue().getType();
                    int value = (int) entry.getValue().getValue();
                    if ((type == 221&&value==5)){
                        boo = true;
                        break;
                    }

                }
                throw new IllegalArgumentException("删除高级首饰=="+roleEquip.getRoleId()+"=="+"=="+roleEquip.getName()+"=="+roleEquip.queryLevel()+"=="+roleEquip.queryUpgradeLevel()+"=="+boo);
            }
        }catch (Exception e){
           log.error("删除装备",e);
        }
        return this.equips.remove(equipId, getRoleEquip(equipId));
    }

}
